#ifndef GAMESCENE_H
#define GAMESCENE_H
#include <QObject>
#include <QMainWindow>
#include <QLabel>
#include <QTimer>
#include<QMouseEvent>
#include <QList>
#include "movingobject.h"
#include <random>
#include<QMutex>
class MovingObject;
class gamescene : public QMainWindow
{
    Q_OBJECT
public:
    explicit gamescene(QWidget *parent = nullptr);
    void paintEvent(QPaintEvent*)override;
    void resetGame();
    ~gamescene();
protected:
    void mousePressEvent(QMouseEvent*event)override;
public slots:
    void startmoving();
    void moveObject();
    void updateCountdown();
    void checkGameResult();
    void showVictoryScreen();
    void updateRunningAnimation();
    void checkCollisions();
private:
    QTimer *anitimer;
    QList<MovingObject*> movingObjects; // 存储所有移动物体
    QMutex movingObjectsMutex;
    QTimer *collisionTimer; // 碰撞检测定时器
    QTimer *spawnTimer; // 定时器，用于控制物体生成间隔
    QStringList imagePaths; // 物体图片路径列表
    std::random_device rd; // 随机种子
    std::mt19937 gen; // 随机数生成器
    int currentFrame;
    const int frameCount = 6; // 假设共有6帧图片
    QLabel *runningManLabel;
    bool ismoving;
    bool isPaused=false;
    bool isJumping=false;
    int jumpHeight=0; // 跳跃高度
    const int maxJumpHeight = 300; // 最大跳跃高度
    const int jumpStep = 35; // 每次跳跃的步长
    QLabel *countdownLabel; // 倒计时显示
    QTimer *countdownTimer; // 倒计时定时器
    int remainingTime;      // 剩余时间（秒）
    bool isGameOver;        // 游戏是否结束
    QLabel *label;
signals:
};
#endif // GAMESCENE_H
